#pragma once
#include "CommonHead.h"

class ZIPModel
{
public:
	void compress(string srcFilePath, string dstFilePath);
	void decompress(string srcFilePath, string dstFilePath);
};

class RARModel
{
public:
	void compress(string srcFilePath, string dstFilePath);
	void decompress(string srcFilePath, string dstFilePath);
};

class ZModel
{
public:
	void compress(string srcFilePath, string dstFilePath);
	void decompress(string srcFilePath, string dstFilePath);
};

class CompressionFacade
{
public:
	CompressionFacade(ZIPModel* pZipModel = nullptr, RARModel* pRarModel = nullptr, ZModel* pZModel = nullptr);
	~CompressionFacade();
	void compress(string srcFilePath, string dstFilePath, string type);
	void decompress(string srcFilePath, string dstFilePath);

private:
	ZIPModel* m_pZipModel;
	RARModel* m_pRarModel;
	ZModel* m_pZModel;
};